@深巷
1年前 提问
1个回答
宽字节注入为什么产生
Ann
1年前
产生宽字节注入的主要原因是是源于程序员设置数据库编码与PHP编码设置为不同的两个编码格式从而导致产生宽字节注入,宽字节注入是利用mysql的一个特性,mysql在使用GBK编码(GBK就是常说的宽字节之一,实际上只有两字节)的时候,会认为两个字符是一个汉字,导致编码转换出现问题从而出现注入。简单来说就是数据库使用了宽字符集,而程序员在编写web页面时没有考虑到这个问题。
sql注入防范措施有以下这些:
把应用服务器的数据库权限降至最低,尽可能地减少 SQL 注入攻击带来的危害。
避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。
对进入数据库的特殊字符(’’尖括号&*;等)进行转义处理,或编码转换。
所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,即不要直接拼接SQL语句。
在测试阶段,建议使用专门的 SQL 注入检测工具进行检测。网上有很多这方面的开源工具,例如sqlmap、SQLninja等。
善用数据库操作库,有些库包可能已经做好了相关的防护,我们只需阅读其文档,看是否支持相应的功能即可。